library(tidyverse)
library(datasets)

Técnicas
Desde el punto de vista del tipo de aprendizaje:
Aprendizaje Supervisado:
Desde estadística:
datasets::attitude
ggplot(attitude, aes(rating, complaints))+
geom_point()+
geom_smooth(method = 'lm')


set.seed(123)
df <- tibble(x = c(rchisq(20, 2),rchisq(20, 10)), y = rep(c(0,1), each=20))
ggplot(df, aes(x, y))+
geom_point()+
geom_smooth(method = "glm",
method.args = list(family = "binomial"),
se = FALSE)




Aprendizaje No supervisado:
Clustering:

Reducción de dimensionalidad:


set.seed(123)
df <- tibble(x = c(rchisq(20, 2),rchisq(20, 10)), y = rep(c(0,1), each=20))
ggplot(df, aes(x, y))+
geom_point()+
geom_smooth(method = "glm",
method.args = list(family = "binomial"),
se = FALSE)




Desde el punto de vista del tipo de datos:
Datos estructurados:
Series de Tiempo:


Grafos:

Datos geográficos

Datos no estructurados:
texto:


imagenes
sonido
Desde el punto de vista del remuestreo:
- Test-train
- Cross-Validation


Desde el punto de vista de la optimización:


Flujo de trabajo

- Preprocesamiento
- Entrenamiento
- Validación
Otros temas


- Trade-off Precision-recall

LS0tCnRpdGxlOiBNYXBhIGRlIERhdGEgU2NpZW5jZQpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazoKICAgIHRvYzogeWVzCiAgICB0b2NfZmxvYXQ6IHllcwpkYXRlOiAiIgotLS0KCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KGRhdGFzZXRzKQpgYGAKCiFbXShpbWcvdmVubl9kcy5wbmcpe3dpZHRoPTc1MH0KCiMjIFTDqWNuaWNhcwoKCiMjIyBEZXNkZSBlbCBwdW50byBkZSB2aXN0YSBkZWwgdGlwbyBkZSBhcHJlbmRpemFqZToKCiMjIyMgQXByZW5kaXphamUgU3VwZXJ2aXNhZG86CiMjIyMjIERlc2RlIGVzdGFkw61zdGljYToKCi0gW01vZGVsbyBMaW5lYWxdKGh0dHA6Ly9mYWN1bHR5Lm1hcnNoYWxsLnVzYy5lZHUvZ2FyZXRoLWphbWVzL0lTTC9JU0xSJTIwU2V2ZW50aCUyMFByaW50aW5nLnBkZikKICAgIAoKYGBge3J9CmRhdGFzZXRzOjphdHRpdHVkZQpnZ3Bsb3QoYXR0aXR1ZGUsIGFlcyhyYXRpbmcsIGNvbXBsYWludHMpKSsKICBnZW9tX3BvaW50KCkrCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gJ2xtJykKYGBgCiAgICAKLSBbUmlkZ2UsIExhc3NvLCBFbGFzdGljIE5ldCwgU3BsaW5lcywgZXRjLl0oaHR0cDovL2ZhY3VsdHkubWFyc2hhbGwudXNjLmVkdS9nYXJldGgtamFtZXMvSVNML0lTTFIlMjBTZXZlbnRoJTIwUHJpbnRpbmcucGRmKQoKIVtdKGltZy9yaWRnZV9sYXNzby5wbmcpe3dpZHRoPTUwMH0KICAKLSBbUmVncmVzacOzbiBsb2fDrXNpdGNhXShodHRwOi8vZmFjdWx0eS5tYXJzaGFsbC51c2MuZWR1L2dhcmV0aC1qYW1lcy9JU0wvSVNMUiUyMFNldmVudGglMjBQcmludGluZy5wZGYpCiAgCmBgYHtyfQpzZXQuc2VlZCgxMjMpCmRmIDwtIHRpYmJsZSh4ID0gYyhyY2hpc3EoMjAsIDIpLHJjaGlzcSgyMCwgMTApKSwgeSA9IHJlcChjKDAsMSksIGVhY2g9MjApKQoKZ2dwbG90KGRmLCBhZXMoeCwgeSkpKwogIGdlb21fcG9pbnQoKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAiZ2xtIiwgCiAgICBtZXRob2QuYXJncyA9IGxpc3QoZmFtaWx5ID0gImJpbm9taWFsIiksIAogICAgc2UgPSBGQUxTRSkKYGBgCgotIFtTdXBwb3J0IFZlY3RvciBNYWNoaW5lXShodHRwOi8vZmFjdWx0eS5tYXJzaGFsbC51c2MuZWR1L2dhcmV0aC1qYW1lcy9JU0wvSVNMUiUyMFNldmVudGglMjBQcmludGluZy5wZGYpCiFbXShpbWcvU1ZNX21hcmdpbi5wbmcpe3dpZHRoPTUwMH0KCi0gW05haXZlIEJheWVzXShodHRwOi8vcHJvZnNpdGUudW0uYWMuaXIvfm1vbnNlZmkvbWFjaGluZS1sZWFybmluZy9wZGYvTWFjaGluZS1MZWFybmluZy1Ub20tTWl0Y2hlbGwucGRmKQogIAohW10oaW1nL05CXzEucG5nKXt3aWR0aD01MDB9CiFbXShpbWcvTkJfMi5wbmcpe3dpZHRoPTc1MH0KICAKLSBbTWFya292IGNoYWluc10oaHR0cHM6Ly93ZWIuc3RhbmZvcmQuZWR1L35oYXN0aWUvUGFwZXJzL0VTTElJLnBkZil7d2lkdGg9NTAwfQotIC4uLgojIyMjIyBEZXNkZSBjb21wdXRhY2nDs246CgotIFtTaXN0ZW1hIGV4cGVydG9dKGh0dHA6Ly9wcm9mc2l0ZS51bS5hYy5pci9+bW9uc2VmaS9tYWNoaW5lLWxlYXJuaW5nL3BkZi9NYWNoaW5lLUxlYXJuaW5nLVRvbS1NaXRjaGVsbC5wZGYpCi0gW0sgbmVhcmVzdCBuZWlnaGJvcnNdKGh0dHA6Ly9wcm9mc2l0ZS51bS5hYy5pci9+bW9uc2VmaS9tYWNoaW5lLWxlYXJuaW5nL3BkZi9NYWNoaW5lLUxlYXJuaW5nLVRvbS1NaXRjaGVsbC5wZGYpCiFbXShpbWcva25uLnBuZykKLSBbw4FyYm9sZXMgZGUgZGVjaXNpw7NuXShodHRwOi8vcHJvZnNpdGUudW0uYWMuaXIvfm1vbnNlZmkvbWFjaGluZS1sZWFybmluZy9wZGYvTWFjaGluZS1MZWFybmluZy1Ub20tTWl0Y2hlbGwucGRmKQoKIVtdKGltZy93aGF0LWlzLWEtZGVjaXNpb24tdHJlZS5wbmcpe3dpZHRoPTc1MH0gICAgCgotIFtFbnNhbWJsZXMgZGUgw6FyYm9sZXNdKGh0dHBzOi8vZG9jLmxhZ291dC5vcmcvT3RoZXJzL0RhdGElMjBNaW5pbmcvRW5zZW1ibGUlMjBNZXRob2RzJTIwaW4lMjBEYXRhJTIwTWluaW5nXyUyMEltcHJvdmluZyUyMEFjY3VyYWN5JTIwdGhyb3VnaCUyMENvbWJpbmluZyUyMFByZWRpY3Rpb25zJTIwJTVCU2VuaSUyMCUyNiUyMEVsZGVyJTIwMjAxMC0wMi0yNCU1RC5wZGYpCi0gW1JhbmRvbSBGb3Jlc3QgKEJhZ2dpbmcpXShodHRwczovL2Jvb2tkb3duLm9yZy9jb250ZW50LzIwMzEvZW5zYW1ibGFkb3Jlcy1yYW5kb20tZm9yZXN0LXBhcnRlLWkuaHRtbCNyYW5kb20tZm9yZXN0KQohW10oaW1nL1JGLnBuZyl7d2lkdGg9NzUwfSAgICAKLSBbWEctQk9PU1QgKEJvb3N0aW5nKV0oaHR0cHM6Ly9tYWNoaW5lbGVhcm5pbmdtYXN0ZXJ5LmNvbS9nZW50bGUtaW50cm9kdWN0aW9uLXhnYm9vc3QtYXBwbGllZC1tYWNoaW5lLWxlYXJuaW5nLykKICAgIAohW10oaW1nL2Jvb3N0ZWQtdHJlZXMtcHJvY2Vzcy5wbmcpe3dpZHRoPTc1MH0gICAgCgotIFkgbXVjaG9zIG3DoXMuLi4KCiMjIyMjIERlZXAgTGVhcm5pbmc6CgotIFtNdWx0aS1sYXllciBwZXJjZXB0cm9uIG5ldHdvcmtdKGh0dHBzOi8vd3d3LmRlZXBsZWFybmluZ2Jvb2sub3JnL2NvbnRlbnRzL21scC5odG1sKQohW01MUF0oaW1nL25uLnBuZyl7d2lkdGg9NTAwfQotIFtDb252b2x1dGlvbmFsIE5ldXJhbCBOZXR3b3JrXShodHRwOi8vY3MyMzFuLmdpdGh1Yi5pby9jb252b2x1dGlvbmFsLW5ldHdvcmtzLykKIVtDTk5dKGltZy9jbm4ucG5nKXt3aWR0aD0xMDAwfQotIFtMb25nLXNob3J0IFRlcm0gTWVtb3J5IE5ldXJhbCBOZXR3b3JrXShodHRwczovL3d3dy5kZWVwbGVhcm5pbmdib29rLm9yZy9jb250ZW50cy9ybm4uaHRtbCkKLSAuLi4KICAgIAoKIyMjIyBBcHJlbmRpemFqZSBObyBzdXBlcnZpc2FkbzoKCiMjIyMjIENsdXN0ZXJpbmc6CgotIFtLLW1lYW5zXShodHRwOi8vZmFjdWx0eS5tYXJzaGFsbC51c2MuZWR1L2dhcmV0aC1qYW1lcy9JU0wvSVNMUiUyMFNldmVudGglMjBQcmludGluZy5wZGYpCi0gW1BhdGl0aW9uIGFyb3VuZCBtZWRpb2lkc10oaHR0cHM6Ly93d3cuY3MudW1iLmVkdS9jczczOC9wYW0xLnBkZikKLSBbREJTQ0FOXShodHRwczovL2VsdmV4LnVnci5lcy9pZGJpcy9kbS9zbGlkZXMvNDMlMjBDbHVzdGVyaW5nJTIwLSUyMERlbnNpdHkucGRmKQoKIVtdKGltZy9jbHVzdGVyX2NvbXBhcmlzb24ucG5nKXt3aWR0aD01MDB9CiAgICAKIyMjIyMgUmVkdWNjacOzbiBkZSBkaW1lbnNpb25hbGlkYWQ6Ci0gW1BDQV0oaHR0cDovL3d3dy51Yi5lZHUvc3RhdC9wZXJzb25hbC9jdWFkcmFzL21ldG9kb3MucGRmKQohW10oaW1nL1BDQWV4YW1wbGUucG5nKXt3aWR0aD01MDB9Ci0gW0xTSV0oaHR0cDovL2xzYS5jb2xvcmFkby5lZHUvcGFwZXJzL2RwMS5MU0FpbnRyby5wZGYpCi0gW1QtU05FXShodHRwczovL2x2ZG1hYXRlbi5naXRodWIuaW8vdHNuZS8pCiFbXShpbWcvdHNuZS5wbmcpe3dpZHRoPTUwMH0KCgojIyMjIFtBcHJlbmRpemFqZSBTZW1pLXN1cGVydmlzYWRvXShodHRwczovL3d3dy5nZWVrc2ZvcmdlZWtzLm9yZy9tbC1zZW1pLXN1cGVydmlzZWQtbGVhcm5pbmcvKQoKIVtdKGltZy9zZW1pc3VwZXJ2aXNlZC5wbmcpe3dpZHRoPTUwMH0KCiAgICAKIVtdKGltZy9yaWRnZV9sYXNzby5wbmcpe3dpZHRoPTUwMH0KICAKLSBbUmVncmVzacOzbiBsb2fDrXNpdGNhXShodHRwOi8vZmFjdWx0eS5tYXJzaGFsbC51c2MuZWR1L2dhcmV0aC1qYW1lcy9JU0wvSVNMUiUyMFNldmVudGglMjBQcmludGluZy5wZGYpCiAgCmBgYHtyfQpzZXQuc2VlZCgxMjMpCmRmIDwtIHRpYmJsZSh4ID0gYyhyY2hpc3EoMjAsIDIpLHJjaGlzcSgyMCwgMTApKSwgeSA9IHJlcChjKDAsMSksIGVhY2g9MjApKQoKZ2dwbG90KGRmLCBhZXMoeCwgeSkpKwogIGdlb21fcG9pbnQoKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAiZ2xtIiwgCiAgICBtZXRob2QuYXJncyA9IGxpc3QoZmFtaWx5ID0gImJpbm9taWFsIiksIAogICAgc2UgPSBGQUxTRSkKYGBgCgotIFtTdXBwb3J0IFZlY3RvciBNYWNoaW5lXShodHRwOi8vZmFjdWx0eS5tYXJzaGFsbC51c2MuZWR1L2dhcmV0aC1qYW1lcy9JU0wvSVNMUiUyMFNldmVudGglMjBQcmludGluZy5wZGYpCiFbXShpbWcvU1ZNX21hcmdpbi5wbmcpe3dpZHRoPTUwMH0KCi0gW05haXZlIEJheWVzXShodHRwOi8vcHJvZnNpdGUudW0uYWMuaXIvfm1vbnNlZmkvbWFjaGluZS1sZWFybmluZy9wZGYvTWFjaGluZS1MZWFybmluZy1Ub20tTWl0Y2hlbGwucGRmKQogIAohW10oaW1nL05CXzEucG5nKXt3aWR0aD01MDB9CiFbXShpbWcvTkJfMi5wbmcpe3dpZHRoPTc1MH0KICAKLSBbTWFya292IGNoYWluc10oaHR0cHM6Ly93ZWIuc3RhbmZvcmQuZWR1L35oYXN0aWUvUGFwZXJzL0VTTElJLnBkZil7d2lkdGg9NTAwfQotIC4uLgojIyMjIyBEZXNkZSBjb21wdXRhY2nDs246CgotIFtTaXN0ZW1hIGV4cGVydG9dKGh0dHA6Ly9wcm9mc2l0ZS51bS5hYy5pci9+bW9uc2VmaS9tYWNoaW5lLWxlYXJuaW5nL3BkZi9NYWNoaW5lLUxlYXJuaW5nLVRvbS1NaXRjaGVsbC5wZGYpCi0gW0sgbmVhcmVzdCBuZWlnaGJvcnNdKGh0dHA6Ly9wcm9mc2l0ZS51bS5hYy5pci9+bW9uc2VmaS9tYWNoaW5lLWxlYXJuaW5nL3BkZi9NYWNoaW5lLUxlYXJuaW5nLVRvbS1NaXRjaGVsbC5wZGYpCiFbXShpbWcva25uLnBuZykKLSBbw4FyYm9sZXMgZGUgZGVjaXNpw7NuXShodHRwOi8vcHJvZnNpdGUudW0uYWMuaXIvfm1vbnNlZmkvbWFjaGluZS1sZWFybmluZy9wZGYvTWFjaGluZS1MZWFybmluZy1Ub20tTWl0Y2hlbGwucGRmKQoKIVtdKGltZy93aGF0LWlzLWEtZGVjaXNpb24tdHJlZS5wbmcpe3dpZHRoPTc1MH0gICAgCgotIFtFbnNhbWJsZXMgZGUgw6FyYm9sZXNdKGh0dHBzOi8vZG9jLmxhZ291dC5vcmcvT3RoZXJzL0RhdGElMjBNaW5pbmcvRW5zZW1ibGUlMjBNZXRob2RzJTIwaW4lMjBEYXRhJTIwTWluaW5nXyUyMEltcHJvdmluZyUyMEFjY3VyYWN5JTIwdGhyb3VnaCUyMENvbWJpbmluZyUyMFByZWRpY3Rpb25zJTIwJTVCU2VuaSUyMCUyNiUyMEVsZGVyJTIwMjAxMC0wMi0yNCU1RC5wZGYpCi0gW1JhbmRvbSBGb3Jlc3QgKEJhZ2dpbmcpXShodHRwczovL2Jvb2tkb3duLm9yZy9jb250ZW50LzIwMzEvZW5zYW1ibGFkb3Jlcy1yYW5kb20tZm9yZXN0LXBhcnRlLWkuaHRtbCNyYW5kb20tZm9yZXN0KQohW10oaW1nL1JGLnBuZyl7d2lkdGg9NzUwfSAgICAKLSBbWEctQk9PU1QgKEJvb3N0aW5nKV0oaHR0cHM6Ly9tYWNoaW5lbGVhcm5pbmdtYXN0ZXJ5LmNvbS9nZW50bGUtaW50cm9kdWN0aW9uLXhnYm9vc3QtYXBwbGllZC1tYWNoaW5lLWxlYXJuaW5nLykKICAgIAohW10oaW1nL2Jvb3N0ZWQtdHJlZXMtcHJvY2Vzcy5wbmcpe3dpZHRoPTc1MH0gICAgCgotIFkgbXVjaG9zIG3DoXMuLi4KCiMjIyMjIERlZXAgTGVhcm5pbmc6CgotIFtNdWx0aS1sYXllciBwZXJjZXB0cm9uIG5ldHdvcmtdKGh0dHBzOi8vd3d3LmRlZXBsZWFybmluZ2Jvb2sub3JnL2NvbnRlbnRzL21scC5odG1sKQohW01MUF0oaW1nL25uLnBuZyl7d2lkdGg9NTAwfQotIFtDb252b2x1dGlvbmFsIE5ldXJhbCBOZXR3b3JrXShodHRwOi8vY3MyMzFuLmdpdGh1Yi5pby9jb252b2x1dGlvbmFsLW5ldHdvcmtzLykKIVtDTk5dKGltZy9jbm4ucG5nKXt3aWR0aD0xMDAwfQotIFtMb25nLXNob3J0IFRlcm0gTWVtb3J5IE5ldXJhbCBOZXR3b3JrXShodHRwczovL3d3dy5kZWVwbGVhcm5pbmdib29rLm9yZy9jb250ZW50cy9ybm4uaHRtbCkKLSAuLi4KICAgIAoKIyMjIyBBcHJlbmRpemFqZSBObyBzdXBlcnZpc2FkbzoKCiMjIyMjIENsdXN0ZXJpbmc6CgotIFtLLW1lYW5zXShodHRwOi8vZmFjdWx0eS5tYXJzaGFsbC51c2MuZWR1L2dhcmV0aC1qYW1lcy9JU0wvSVNMUiUyMFNldmVudGglMjBQcmludGluZy5wZGYpCi0gW1BhdGl0aW9uIGFyb3VuZCBtZWRpb2lkc10oaHR0cHM6Ly93d3cuY3MudW1iLmVkdS9jczczOC9wYW0xLnBkZikKLSBbREJTQ0FOXShodHRwczovL2VsdmV4LnVnci5lcy9pZGJpcy9kbS9zbGlkZXMvNDMlMjBDbHVzdGVyaW5nJTIwLSUyMERlbnNpdHkucGRmKQoKIVtdKGltZy9jbHVzdGVyX2NvbXBhcmlzb24ucG5nKXt3aWR0aD01MDB9CiAgICAKIyMjIyMgUmVkdWNjacOzbiBkZSBkaW1lbnNpb25hbGlkYWQ6Ci0gW1BDQV0oaHR0cDovL3d3dy51Yi5lZHUvc3RhdC9wZXJzb25hbC9jdWFkcmFzL21ldG9kb3MucGRmKQohW10oaW1nL1BDQWV4YW1wbGUucG5nKXt3aWR0aD01MDB9Ci0gW0xTSV0oaHR0cDovL2xzYS5jb2xvcmFkby5lZHUvcGFwZXJzL2RwMS5MU0FpbnRyby5wZGYpCi0gW1QtU05FXShodHRwczovL2x2ZG1hYXRlbi5naXRodWIuaW8vdHNuZS8pCiFbXShpbWcvdHNuZS5wbmcpe3dpZHRoPTUwMH0KPj4+Pj4+PiA5ZDFkNmM5NTY1Y2FhMzRhMzk5NWNkY2Q0YWUxMDI5ODI0NzlmZjY1CgojIyMjIFtNb2RlbG9zIGdlbmVyYXRpdm9zXShodHRwczovL3d3dy5vcmVpbGx5LmNvbS9saWJyYXJ5L3ZpZXcvZ2VuZXJhdGl2ZS1kZWVwLWxlYXJuaW5nLzk3ODE0OTIwNDE5MzEvY2gwMS5odG1sKQoKUG9yIGVqZW1wbG86IFtodHRwczovL3RyYW5zZm9ybWVyLmh1Z2dpbmdmYWNlLmNvL2RvYy9ncHQyLWxhcmdlXShodHRwczovL3RyYW5zZm9ybWVyLmh1Z2dpbmdmYWNlLmNvL2RvYy9ncHQyLWxhcmdlKQoKIyMjIyBbQXByZW5kaXphamUgU2VtaS1zdXBlcnZpc2Fkb10oaHR0cHM6Ly93d3cuZ2Vla3Nmb3JnZWVrcy5vcmcvbWwtc2VtaS1zdXBlcnZpc2VkLWxlYXJuaW5nLykKCiFbXShpbWcvc2VtaXN1cGVydmlzZWQucG5nKXt3aWR0aD01MDB9CgojIyMjIFtNb2RlbG9zIGdlbmVyYXRpdm9zXShodHRwczovL3d3dy5vcmVpbGx5LmNvbS9saWJyYXJ5L3ZpZXcvZ2VuZXJhdGl2ZS1kZWVwLWxlYXJuaW5nLzk3ODE0OTIwNDE5MzEvY2gwMS5odG1sKQoKUG9yIGVqZW1wbG86IFtodHRwczovL3RyYW5zZm9ybWVyLmh1Z2dpbmdmYWNlLmNvL2RvYy9ncHQyLWxhcmdlXShodHRwczovL3RyYW5zZm9ybWVyLmh1Z2dpbmdmYWNlLmNvL2RvYy9ncHQyLWxhcmdlKQoKIyMjIERlc2RlIGVsIHB1bnRvIGRlIHZpc3RhIGRlbCB0aXBvIGRlIGRhdG9zOgoKIyMjIyBEYXRvcyBlc3RydWN0dXJhZG9zOgojIyMjIyBEYXRvcyB0YWJ1bGFkb3MKYGBge3J9CmlyaXMKYGBgCgojIyMjIyBTZXJpZXMgZGUgVGllbXBvOgoKIVtdKGltZy90aW1lc2VyaWVzLnBuZyl7d2lkdGg9NzUwfQoKLSBbQVJJTUFdKGh0dHBzOi8vb3RleHRzLmNvbS9mcHAyL2FyaW1hLmh0bWwpCi0gW1dhdmVsZXRzXShodHRwOi8vc2VkaWNpLnVubHAuZWR1LmFyL2JpdHN0cmVhbS9oYW5kbGUvMTA5MTUvMjQyODkvRG9jdW1lbnRvX2NvbXBsZXRvLnBkZj9zZXF1ZW5jZT0xKQoKIVtdKGltZy93YXZlbGV0cy5wbmcpe3dpZHRoPTUwMH0KCiMjIyMjIEdyYWZvczoKCiFbXShpbWcvbmV0d29yay5wbmcpe3dpZHRoPTUwMH0KCiMjIyMjIERhdG9zIGdlb2dyw6FmaWNvcwoKIVtdKGltZy9nZW9kYXRhLmdpZil7d2lkdGg9NTAwfQoKIyMjIyBEYXRvcyBubyBlc3RydWN0dXJhZG9zOgojIyMjIyB0ZXh0bzoKCi0gW0xEQV0oaHR0cDovL3d3dy5qbWxyLm9yZy9wYXBlcnMvdm9sdW1lMy9ibGVpMDNhL2JsZWkwM2EucGRmKQoKIVtdKGltZy9MREEucG5nKXt3aWR0aD01MDB9CgotIFtXb3JkIEVtYmVkZGluZ3NdKGh0dHBzOi8vbWVkaXVtLmNvbS9AZ3J1aXpkZXZpbGxhL2ludHJvZHVjY2klQzMlQjNuLWEtd29yZDJ2ZWMtc2tpcC1ncmFtLW1vZGVsLTQ4MDBmNzJjODcxZikKCiFbXShpbWcvd29yZF9lbWJlZGRpbmdzLnBuZyl7d2lkdGg9NTAwfQoKIyMjIyMgaW1hZ2VuZXMKIyMjIyMgc29uaWRvCgoKIyMjIERlc2RlIGVsIHB1bnRvIGRlIHZpc3RhIGRlbCByZW11ZXN0cmVvOgoKLSBUZXN0LXRyYWluCi0gQ3Jvc3MtVmFsaWRhdGlvbgoKIVtdKGltZy90ZXN0dHJhaW5zcGxpdC5wbmcpe3dpZHRoPTUwMH0KCgotIFtCb290c3RyYXBpbmddKGh0dHBzOi8vbWFjaGluZWxlYXJuaW5nbWFzdGVyeS5jb20vYS1nZW50bGUtaW50cm9kdWN0aW9uLXRvLXRoZS1ib290c3RyYXAtbWV0aG9kLykKCiFbXShpbWcvYm9vdHN0cmFwLXJlc2FtcGxpbmcucG5nKXt3aWR0aD01MDB9CgoKIyMjIERlc2RlIGVsIHB1bnRvIGRlIHZpc3RhIGRlIGxhIG9wdGltaXphY2nDs246Ci0gW0dyYWRpZW50IERlc2NlbnRdKGh0dHBzOi8vaGFja2Vybm9vbi5jb20vZ3JhZGllbnQtZGVzY2VudC1heW5rLTdjYmU5NWE3NzhkYSkKCiFbXShpbWcvZ3JhZGllbnRkZXNjZW50LnBuZyl7d2lkdGg9NTAwfQoKCi0gW0FsZ29yw610bW9zIEdlbsOpdGljb3NdKGh0dHBzOi8vdG93YXJkc2RhdGFzY2llbmNlLmNvbS9pbnRyb2R1Y3Rpb24tdG8tZ2VuZXRpYy1hbGdvcml0aG1zLWluY2x1ZGluZy1leGFtcGxlLWNvZGUtZTM5NmU5OGQ4YmYzKQoKIVtdKGltZy9nYWRpYWdyYW0ucG5nKXt3aWR0aD01MDB9CgotIFtJbmZlcmVuY2lhIFZhcmlhY2lvbmFsXShodHRwczovL2FyeGl2Lm9yZy9wZGYvMTYwMS4wMDY3MC5wZGYpCgoKIyMgRmx1am8gZGUgdHJhYmFqbwoKWyFbXShpbWcvZGF0YS1zY2llbmNlLXdvcmtmbG93LnBuZyl7d2lkdGg9MTAwMH1dKGh0dHBzOi8vcjRkcy5oYWQuY28ubnovaW50cm9kdWN0aW9uLmh0bWwpCgoxLiBQcmVwcm9jZXNhbWllbnRvCjEuIEVudHJlbmFtaWVudG8KMS4gVmFsaWRhY2nDs24KCiMjIE1ldGEgZmx1am8gZGUgdHJhYmFqbwoKIVtdKGltZy9naXQuanBlZyl7d2lkdGg9MjAwfQohW10oaW1nL2dpdF9mbG93LnBuZyl7d2lkdGg9MTAwMH0KCkVqZW1wbG86IFtodHRwczovL2dpdGh1Yi5jb20vRGllZ29Lb3ovaW50cm9fZHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9EaWVnb0tvei9pbnRyb19kcykKCiMjIE90cm9zIHRlbWFzCgotIFtTb2JyZWFqdXN0ZV0oaHR0cHM6Ly9kaWVnb2tvei5zaGlueWFwcHMuaW8vb3ZlcmZpdHRpbmcvKQoKIVtdKGltZy9vdmVyZml0dGluZy5wbmcpe3dpZHRoPTc1MH0KCgotIFtUcmFkZS1vZmYgc2VzZ28gdmFyaWFuemFdKGh0dHA6Ly9mYWN1bHR5Lm1hcnNoYWxsLnVzYy5lZHUvZ2FyZXRoLWphbWVzL0lTTC9JU0xSJTIwU2V2ZW50aCUyMFByaW50aW5nLnBkZikKCiFbXShpbWcvYmlhc3ZhcmlhbmNlLmpwZyl7d2lkdGg9NTAwfQoKLSBUcmFkZS1vZmYgUHJlY2lzaW9uLXJlY2FsbAoKIVtdKGltZy9wcmVjcmVjYWxsLnBuZyl7d2lkdGg9NTAwfQoKIyMgSW1wbGVtZW50YWNpb25lczoKCi0gW0NhcmV0XShodHRwOi8vdG9wZXBvLmdpdGh1Yi5pby9jYXJldC9pbmRleC5odG1sKQotIFtUaWR5bW9kZWxzXShodHRwczovL3J2aWV3cy5yc3R1ZGlvLmNvbS8yMDE5LzA2LzE5L2EtZ2VudGxlLWludHJvLXRvLXRpZHltb2RlbHMvKQotIFtTY2kta2l0IGxlYXJuXShodHRwczovL3NjaWtpdC1sZWFybi5vcmcvc3RhYmxlLykKCgoKCgoKCg==